Computer users sometimes find their computers behave in unexpected ways. This unexpected behavior may be due to the user's unfamiliarity with the computer's hardware or software or due to a malfunction. Having encountered a problem, a user is typically compelled to overcome the problem in some way.
A user may attempt to discover the nature of the problem and its solution by experimentation. The user may experiment with alternative ways of performing the desired function or with reconfiguring the computer through software.
Sometimes, users will attempt to search a user group for a solution to the problem. If the user cannot identify a solution from the existing user group posts, the user may choose to describe the problem encountered in a post to the group. Typically the user will then check the user group for a response or will be notified when a response has been posted.
When available, the user may contact a technical support service for help with the problem.
Of course, the user may simply avoid the problem by discontinuing use of the feature or program that was in use when the problem was encountered.
However the user chooses to address the problem, the process of searching for a solution may be frustrating to the user and may require a considerable investment of time from the user and those who have come to his/her aid. The unexpected frustration and loss of time the user encounters detracts from the overall user experience.
Automated error reporting services have been employed to improve user experience. When a problem, such as an application crash or hang, occurs, an agent on a computer may collect information about the state of the program that experienced the problem. Typically, this information includes a stack dump, an instruction trace and other information about a process in which the application that experienced a problem was executing at the time of the problem or in an interval before the problem occurred.
The information is then transmitted to a server. The server may aggregate information from multiple computers, potentially over a long period of time. The aggregated information may be analyzed by a development team for the program that experienced the problem and can therefore be used in upgrading the program to avoid problems in the future.